【Git】リモートブランチをチェックアウトしたいときは「git fetch origin <ブランチ名>」と「git checkout <ブランチ名>」を実行すれば良い
こんにちは、CX事業本部の若槻です。
今回は、Gitでのリモートブランチの操作で個人的にやらかしがちなことを備忘録として残させて頂きます。
どんなこと?
「他のメンバーがリモートにpushしたブランチをローカルで参照したり動かしたりしたい!」となり、git checkout -b <ブランチ名> origin/<ブランチ名>
コマンドによりリモートからブランチをチェックアウトしようとしたら、
% git checkout -b myBranch origin/myBranch fatal: 'origin/myBranch' is not a commit and a branch 'myBranch' cannot be created from it
というエラーとなりコマンドが失敗してしまうことがあります。
これはcheckout
コマンドで第二引数に指定した名前(origin/<ブランチ名>
)のリモート追跡ブランチが作成(フェッチ)されていないことが原因です。
リモート追跡ブランチの一覧はgit branch -r
コマンドで確認可能です。確認してみると現在はdevelop
ブランチしか作成されていません。
% git branch -r remotes/origin/HEAD -> origin/develop
リモートブランチからリモート追跡ブランチを作成する場合は、git fetch origin <ブランチ名>
コマンドを使用します。
% git fetch origin myBranch From https://github.com/account/repository * [new branch] myBranch -> origin/myBranch % git branch -r remotes/origin/HEAD -> origin/develop origin/myBranch
欲しいブランチのリモート追跡ブランチを作成(フェッチ)できました。
※引数を指定せずにgit fetch
と実行するとすべてのリモートブランチに対するリモート追跡ブランチを一括で作成および更新(フェッチ)することができます。
こうして作成されたリモート追跡ブランチからはgit checkout <ブランチ名>
コマンドによりローカルブランチを作成およびチェックアウトすることができます。
% git checkout myBranch Branch 'myBranch' set up to track remote branch 'myBranch' from 'origin'. Switched to a new branch 'myBranch'
リモートブランチからローカルにブランチをチェックアウトすることができました。
おわりに
タイトルの通り、リモートブランチをチェックアウトしたいときは次のコマンドを使えば良いよ!というエントリーでした。
% git fetch origin <ブランチ名> % git checkout <ブランチ名>
ついついローカルブランチからのチェックアウトと同じ要領でgit checkout -b <ブランチ名> origin/<ブランチ名>
コマンドを使ってしまいがちなので気を付けたいです。
参考
- 【Git】リモートのブランチを確認する | Qiita
- gitブランチを作成しようとしたら『fatal: 'origin/ブランチ名' is not a commit and a branch 'ブランチ名' cannot be created from it』となった | Qiita
- 【初心者向け】git fetch、git merge、git pullの違いについて | Qiita
- fetch | サル先生のGit入門
- git fetchとブランチ取り込み系コマンドの引数を省略すると? | Qiita
- git checkout -t でちょっと幸せになれる | Qiita
- git-branch | git Documentation
以上